package com.wechat.service;

import java.util.List;

import com.swak.annotation.FluxAsync;
import com.swak.entity.Page;
import com.swak.entity.Parameters;
import com.wechat.dto.ContactDTO;
import com.wechat.dto.ContactFindDTO;

/**
 * 描述
 * 
 * @author Auto Generator
 * @date 2022-10-21T23:59:27.258522100
 */
@FluxAsync
public interface ContactService {

	/**
	 * 直取
	 */
	ContactDTO get(String id);

	/**
	 * 批量的添加好友
	 * 
	 * @param contacts
	 * @return
	 */
	List<ContactDTO> create(List<ContactDTO> contacts);

	/**
	 * 保存
	 */
	ContactDTO create(ContactDTO contact);

	/**
	 * 删除
	 */
	Integer delete(ContactDTO contact);

	/**
	 * 分页查询
	 */
	Page<ContactDTO> page(ContactDTO query, Parameters param);

	/**
	 * 好友
	 * 
	 * @param find
	 * @return
	 */
	List<ContactDTO> friends(ContactFindDTO find);

	/**
	 * 好友申请
	 * 
	 * @param find
	 * @return
	 */
	List<ContactDTO> friendAdds(ContactFindDTO find);

	/**
	 * 保存备注名
	 * 
	 * @param contact
	 */
	ContactDTO saveAlias(ContactDTO contact);

	/**
	 * 保存描述
	 * 
	 * @param contact
	 */
	ContactDTO saveRemarks(ContactDTO contact);

	/**
	 * 保存昵称
	 * 
	 * @param contact
	 */
	ContactDTO saveNickName(ContactDTO contact);

	/**
	 * 从好友列表中删除 -- 需要同步更新聊天数据
	 * 
	 * @param contact
	 * @return
	 */
	ContactDTO removeFromFriend(ContactDTO contact);

	/**
	 * 批量查询 联系人
	 * 
	 * @param userNames
	 * @return
	 */
	List<ContactDTO> contacts(List<String> userNames);

	/**
	 * 保存是否好友 -- 从其他地方同步更新
	 * 
	 * @param contact
	 */
	void syncIsFriend(ContactDTO contact);
}
